package com.fdl.service.security;

import java.io.Serializable;
import java.util.List;

import org.acegisecurity.BadCredentialsException;

import com.fdl.common.exception.security.DeleteUserSelfException;
import com.fdl.common.exception.security.LoginTimeOutException;
import com.fdl.dao.model.security.Role;
import com.fdl.dao.model.security.User;

/**
 * 
 * @description 
 * @project: hb-intra
 * @Date:2010-8-4
 * @version  1.0
 * @Company: 33e9
 * @author zhangYong.huang
 */
public interface SecurityService {
	public void onSuccessLogin(User user, String loginAddress);

	/**
	 * 获取所有角色
	 * 非系统管理员不用看到系统管理员角色
	 */
	public List getAllRoles();

	public List getAllPermissions();

	/**
	 * 获取所有用户
	 * 非系统管理员不用看到系统管理员帐户
	 */
	public List getAllUsers();

	public void deleteUsers(Serializable[] ids) throws DeleteUserSelfException, LoginTimeOutException ;

	public void enableUsers(Serializable[] ids);

	public void disableUsers(Serializable[] ids);

	public List getAvailableUsersByRole(Role role);

	/**
	 * 重设密码
	 * 只有系统管理员才有权限
	 */
	public void resetPassword(Serializable id, String newPass);

	/**
	 * 修改密码
	 * 输入错误老密码会抛出BadCredentialsException
	 */
	public void modifyPassword(String oldPass, String newPass) throws BadCredentialsException, LoginTimeOutException;

}
